#==================================================
# Copyright IBM 2000
#==================================================

# makefile for stand-alone build of Linux interface for GPFS.
# $Id: makefile.toship,v 1.6.2.1 2002/04/19 05:29:02 mcnabb Exp $

# Build instructions
#  0) export SHARKCLONEROOT=/usr/lpp/mmfs/src
#  1) cd config
#     cp site.mcr.proto site.mcr
#     (edit site.mcr file as desired, eg, architecture and compiler flags)
#  2) cd ..
#  3) make World
#

DESTDIR = /usr/lpp/mmfs/src
TOOLDIR = /usr/X11R6/bin

IMAKE = $(TOOLDIR)/imake
IRULESRC = $(DESTDIR)/shark/config

MAKE = /usr/bin/make
MAKEDASH = -

DOTDOTIMAKE_CMD = $(IMAKE) -Timake.tmpl -I. -I$(IRULESRC) -s makefile

all: World

World::
	@if [ "$(SHARKCLONEROOT)" = "" ]; then \
	echo "Error: SHARKCLONEROOT is not set!"; exit 1; fi
World:: config1
World:: Makefiles
World:: Clean
World:: config2
World:: Headers
World:: Depend
World:: InstallLibs
World:: Install
World:: finish

InstLibs:: InstallLibs

###################################################

SUBDIRS = patches ibm-kxi ibm-linux gpl-linux misc

Clean:: clean
clean::
	rm -rf $(DESTDIR)/include $(DESTDIR)/bin $(DESTDIR)/lib
	mkdir $(DESTDIR)/include $(DESTDIR)/bin $(DESTDIR)/lib
	rm -f config/install.ti

config1::
	cd config; ./bootstrap; $(MAKE) clean; $(MAKE) install

config2::
	cd config; $(MAKE) config2;
	cd misc; $(DOTDOTIMAKE_CMD)
	cd misc; $(MAKE) $(MAKEDASH)$(MAKEFLAGS) $(MAKEEXTRA) stubs
	cd misc; $(MAKE) $(MAKEDASH)$(MAKEFLAGS) $(MAKEEXTRA) install

finish::

###################################################

Install::
	@(case '$(MAKEFLAGS)' in *[ik]*) set +e;; esac; \
	for i in $(SUBDIRS); do \
	(cd $$i; echo  "installing" "(`pwd`)"; \
	$(MAKE) $(MAKEDASH)$(MAKEFLAGS) $(MAKEEXTRA) DESTDIR=$(DESTDIR)  Install; \
	exit $$?) || exit 1; \
	done)

Depend::
	@(case '$(MAKEFLAGS)' in *[ik]*) set +e;; esac; \
	for i in $(SUBDIRS); do \
	(cd $$i; echo  "Depending" "(`pwd`)"; \
	$(MAKE) $(MAKEDASH)$(MAKEFLAGS) $(MAKEEXTRA) DESTDIR=$(DESTDIR)  Depend; \
	exit $$?) || exit 1; \
	done)

Clean::
	@(case '$(MAKEFLAGS)' in *[ik]*) set +e;; esac; \
	for i in $(SUBDIRS) $(EXTRASUBDIRS); do \
	(cd $$i; echo  "cleaning" "(`pwd`)"; \
	$(MAKE) $(MAKEDASH)$(MAKEFLAGS) $(MAKEEXTRA) DESTDIR=$(DESTDIR)  Clean; \
	exit $$?) || exit 1; \
	done)

Makefiles::
	@(case '$(MAKEFLAGS)' in *[ik]*) set +e;; esac; \
	for i in $(SUBDIRS) $(EXTRASUBDIRS); do \
	echo "Making Makefiles (`pwd`/$$i)"; \
	$(MAKE) subdirMakefiles \
	MAKE_SUBDIR=$$i; \
	done)

subdirMakefiles:
	cd $(MAKE_SUBDIR); \
	$(DOTDOTIMAKE_CMD); \
	touch .depends; \
	cat .depends >>makefile; \
	$(MAKE) $(MAKEDASH)$(MAKEFLAGS) $(MAKEEXTRA) Makefiles

Headers::
	@(case '$(MAKEFLAGS)' in *[ik]*) set +e;; esac; \
	for i in $(SUBDIRS) $(EXTRASUBDIRS); do \
	(cd $$i; echo  "installing header files" "(`pwd`)"; \
	$(MAKE) $(MAKEDASH)$(MAKEFLAGS) $(MAKEEXTRA) DESTDIR=$(DESTDIR)  Headers; \
	exit $$?) || exit 1; \
	done)

Libs::
	@(case '$(MAKEFLAGS)' in *[ik]*) set +e;; esac; \
	for i in $(SUBDIRS) $(EXTRASUBDIRS); do \
	(cd $$i; echo  "Make-Libraries-ing" "(`pwd`)"; \
	$(MAKE) $(MAKEDASH)$(MAKEFLAGS) $(MAKEEXTRA) DESTDIR=$(DESTDIR)  Libs; \
	exit $$?) || exit 1; \
	done)

InstallLibs::
	@(case '$(MAKEFLAGS)' in *[ik]*) set +e;; esac; \
	for i in $(SUBDIRS) $(EXTRASUBDIRS); do \
	(cd $$i; echo  "Make-Install-Libraries-ing" "(`pwd`)"; \
	$(MAKE) $(MAKEDASH)$(MAKEFLAGS) $(MAKEEXTRA) DESTDIR=$(DESTDIR)  InstallLibs; \
	exit $$?) || exit 1; \
	done)

# RPM source build option to install images for gpl kernel modules
InstallImages::
	cd gpl-linux; $(MAKE) InstallImages;

# Use screwy method to clean up residual stuff left over
# from a gpl source build (if neccessary) and avoid
# various gripes from rpm uninstall
SrcBuildClean::
	@if [ -f gpl-linux/makefile ]; then make Clean; fi; \
	rm -f config/site.mcr; \
	rm -f shark/config/site.mcr; \
	rm -f shark/config/imake.tmpl; \
	rm -f /usr/lpp/mmfs/bin/mmfslinux; \
	rm -f /usr/lpp/mmfs/bin/tracedev.BAK; \
	if [ -d shark/config ]; then rmdir shark/config; fi; \
	if [ -d shark ]; then rmdir shark; fi; \
	if [ -d lib ]; then rmdir lib; fi; \
	if [ -d bin ]; then rmdir bin; fi; \
	if [ -d include ]; then rmdir include; fi; \
	sh -c 'flist=$$(find ./ -name .depends); rm -f $$flist'; \
	sh -c 'flist=$$(find ./ -name install.he); rm -f $$flist'; \
	sh -c 'flist=$$(find ./ -name makefile.BAK); rm -f $$flist'; \
        rm -f config/makefile gpl-linux/makefile gpl-linux/i386/makefile \
	      ibm-kxi/makefile ibm-linux/makefile misc/makefile patches/makefile

##### DEPENDENCY LINE - DO NOT DELETE #####

